package LambdaTest;

import java.lang.reflect.Array;
import java.util.Arrays;
import java.util.Date;
import javax.swing.*;

public class Main {

    public static void main(String[] args) {
	// write your code here
        //创建字符串数组 planets
        String[] planets = new String[]{
                "Mercury","Venus","Earth","Mars",
                "Jupiter","Saturn","Uranus","Neptune"
        };

        //输出
        System.out.println(Arrays.toString(planets));

        System.out.println("按字母顺序排序：");
        //这里能排序，说明 String 类型有默认实现了 Comparable<T>接口
        //并且默认逻辑是按照字母排序
        Arrays.sort(planets);
        System.out.println(Arrays.toString(planets));

        System.out.println("按长度排序：");
        //sort 方法可以接受第二个参数，Lambda表达式
        // 因为 Comparable<T> 接口中，只有一个方法
        // 所以可以用 Lambda 表达式，将要实现的排序方法传递给系统
        // 来实现非默认的排序逻辑
        Arrays.sort(planets,(x,y)->x.length()-y.length());
        System.out.println(Arrays.toString(planets));

        //创建计时器对象
        //Timer 构造函数第一个参数:执行指定方法的时间间隔，单位毫秒
        //第二个参数接收一个方法，当然也可以接收一个事件 Lambda
        //这个方法或lambda 会按照第一个参数规定的时间间隔，被系统调用执行
        Timer t = new Timer(1000,event->System.out.println("当前时间："+new Date()));
        //启动定时器对象
        t.start();

        //弹出窗口，提示信息，跟用户交互
        JOptionPane.showMessageDialog(null,"是否退出？");
        //点击弹窗确定按钮后，执行退出系统
        System.exit(0);
    }
}
